iT邦幫忙

2023 iThome 鐵人賽

DAY 1
0
自我挑戰組

C again系列 第 1

設定目標

  • 分享至 

  • xImage
  •  

開發 Rails app 數年間總有卡關的感覺,想想應該要深入對「計算機科學」的瞭解,能將過程中遇到的事物與計算機演進歷史的知識連結,專業地描述前因後果。

回顧學習「程式語言」的教材幾乎跟「計算機科學」不相關。教材的方向都是介紹 keyword, syntax 為主,配合內建的 data type,教導如何將人所考慮的事務寫成程式的邏輯判斷。教材的中後段,會使用內建或他人開發包裝的 function 或 lib 實作較複雜的功能。但退一步看整個內容,敘述總是停留在建立符合規則的 input 與顯示返回的 output,在黑盒子外側打轉。

我認為需要進一步探索黑盒子的內容才能升級能力。藉助熟悉的 Ruby 與 YARV 對計算機科學的具體詮釋,學習 OS 及 hardware 的知識。YARV 是用 C 實作的 interpreter,我需要重建 C 的知識。同時 C 也是與 OS 及 processor 有深刻關連的程式語言,過程中應該會遇見一些被 framework 包裝掉的 solution 原貌,學習背後的知識。

整理已知與未知,計劃怎麼進行:

  • 程式如何變成可以「執行」的 process。需要知道 compiler、interpreter 如何將文字變成 CPU instruction。
  • 在 OS 上執行的 Rails 是 Ruby process,執行時會有多個 process 或 thread。需要知道 Ruby 如何管理 process/thread,需要知道 Ruby, OS, CPU 各自對 process/thread 的定義是什麼。
  • Rails process 透過 HTTP server 取得 request 及返回 response。HTTP server 例如 nginx 又是另一個在 OS 上執行的 process。需要知道 process 間如何交換資料。
  • Performance 是怎麼回事,garbage collection 是怎麼回事,問題會有得到解決的一天嗎?

下一篇
Interpreter process
系列文
C again30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言